package 学习;

import java.util.Arrays;

/**
 * Keafmd
 *
 * @ClassName: SelectSort
 * @Description: 选择排序
 * @author: 牛哄哄的柯南
 * @date: 2021-06-24 10:33
 */
public class SelectSort {

    //直接选择排序
    public static void selectSort(int[] arr, boolean ascending) {
        for (int i = 0; i < arr.length; i++) {
            int m = i; //最小值或最小值的下标
            for (int j = i + 1; j < arr.length; j++) {
                if (ascending ? arr[j] < arr[m] : arr[j] > arr[m]) {
                    m = j; //找到待排序的数中最小或最大的那个数，记录下标
                }

            }
            //交换位置
            int temp = arr[i];
            arr[i] = arr[m];
            arr[m] = temp;

        }
    }

    public static void selectSort(int[] arr) {
        selectSort(arr, true);
    }

    public static void main(String[] args) {
        int[] nums = {12, 4, 25, 47, 58, 34, 25, 9, 99, 26, 1, -13, 162, 10093, -66, -1};
        int[] temparr;
        //测试选择排序
        System.out.println("测试选择排序:");
        temparr = nums.clone();
        SelectSort.selectSort(temparr);
        //逆序排序
        //SelectSort.selectSort(temparr,false);
        System.out.println(Arrays.toString(temparr));
    }
}